home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 1, No. 05 (1982-01)(Softdisk)(Side B).zip / Softdisk Magazette Volume 1, No. 05 (1982-01)(Softdisk)(Side B).do / CENTURY.DATE.bas < prev    next >
BASIC Source File  |  1996-12-24  |  4KB  |  97 lines

  1. 5  REM  *** CENTURY.DATE ***
  2. 6  TEXT : HOME 
  3. 7  VTAB 4: HTAB 12: PRINT "CENTURY.DATE"
  4. 8  VTAB 12: PRINT "INITIALIZATION TAKES 7 SECONDS"
  5. 10  GOSUB 8000: GOTO 1000
  6. 100 Y4 = YY/N4:I4 =  INT(Y4):CD = (YY *LY) +I4 +DD
  7. 110  IF I4 = Y4  AND MM <N3  THEN CD = CD -N1
  8. 120 CD = CD +VD(MM): RETURN 
  9. 200 DW$ = VD$(CD -( INT(CD/N7) *N7)): RETURN 
  10. 300 YY =  INT(CD/LY):JD = CD -(YY *LY) - INT((YY -N1)/N4): IF JD <N1  THEN YY = YY -N1
  11. 310 LF = N0:Y4 = YY/N4: IF  INT(Y4) = Y4  THEN LF = N1
  12. 320  IF JD <N1  AND LF = N0  THEN JD = LY +JD
  13. 330  IF JD <N1  AND LF = N1  THEN JD = LY +JD +N1
  14. 340  IF JD <SY  THEN LF = N0
  15. 350 MM = VM(JD -LF):MM$ = MO$(MM):DD = JD -LF -VD(MM): IF JD = SY  THEN DD = DD +LF
  16. 360  RETURN 
  17. 400  GOSUB 200: GOSUB 300:FD$ = DW$ +" " + STR$(DD) +" " +MM$ +" " + STR$(YY): RETURN 
  18. 1000  HOME : VTAB 3: HTAB 15
  19. 1010  PRINT "CENTURY.DATE"
  20. 1030  VTAB 8: PRINT "  1 = ABOUT CENTURY.DATES"
  21. 1035  VTAB 10: PRINT "  2 = MO-DA-YR TO CENTURY.DATE"
  22. 1040  VTAB 12: PRINT "  3 = MO-DA-YR TO DAY-OF-WEEK"
  23. 1050  VTAB 14: PRINT "  4 = MO-DA-YR TO FULL.DATE"
  24. 1060  VTAB 16: PRINT "  5 = CENTURY.DATE TO MO-DA-YR"
  25. 1070  VTAB 18: PRINT "  6 = QUIT"
  26. 1080  VTAB 22: CALL  -868: HTAB 15: PRINT "WHICH? ";: GET R$
  27. 1090  IF R$ = "1" GOTO 2000
  28. 1092  IF R$ = "2" GOTO 3000
  29. 1094  IF R$ = "3" GOTO 4000
  30. 1096  IF R$ = "4" GOTO 5000
  31. 1098  IF R$ = "5" GOTO 6000
  32. 1100  IF R$ = "6"  THEN  HOME : END 
  33. 1110  GOTO 1080
  34. 2000  HOME : VTAB 4: HTAB 12: PRINT "ABOUT CENTURY.DATES"
  35. 2010  VTAB 8: PRINT "THE TERM CENTURY.DATE REFERS TO THE"
  36. 2020  PRINT "DATE EXPRESSED AS THE NUMBER OF DAYS"
  37. 2030  PRINT "SINCE THE LAST DAY OF THE YEAR 1899.
  38. 2040  PRINT : PRINT 
  39. 2050  PRINT "IF YOU WANT TO KNOW THE NUMBER OF DAYS"
  40. 2060  PRINT "BETWEEN TWO DATES YOU CAN CONVERT BOTH"
  41. 2070  PRINT "DATES TO CENTURY.DATES AND SUBTRACT THE"
  42. 2080  PRINT "SMALL ONE FROM THE LARGE ONE."
  43. 2090  GOSUB 10000
  44. 2100  GOTO 1000
  45. 3000  GOSUB 9000
  46. 3010  GOSUB 100
  47. 3020  HOME : VTAB 10
  48. 3030 YY = YY +1900
  49. 3040  PRINT "MO DA YEAR": PRINT 
  50. 3050  PRINT MM;"-";DD;"-";YY;" = ";CD;" DAYS SINCE 1900"
  51. 3060  GOSUB 10000
  52. 3070  GOTO 1000
  53. 4000  GOSUB 9000
  54. 4010  GOSUB 100
  55. 4020  GOSUB 200
  56. 4030  HOME : VTAB 10
  57. 4040 YY = YY +1900
  58. 4050  PRINT "MO DA YEAR": PRINT 
  59. 4060  PRINT MM;"-";DD;"-";YY;" = ";DW$
  60. 4070  GOSUB 10000
  61. 4080  GOTO 1000
  62. 5000  GOSUB 9000
  63. 5010  GOSUB 100: GOSUB 400
  64. 5020  HOME : VTAB 10
  65. 5030 YY = YY +1900
  66. 5040  PRINT "MO DA YEAR": PRINT 
  67. 5050  PRINT MM;"-";DD;"-";YY;" = ";FD$
  68. 5060  GOSUB 10000
  69. 5070  GOTO 1000
  70. 6000  HOME : HTAB 12: PRINT "GET CENTURY.DATE"
  71. 6010  VTAB 12: CALL  -868: INPUT "CENTURY.DATE (1-73049)? ";CD$
  72. 6020 CD =  INT( VAL(CD$)): IF CD <1  OR CD >73049 GOTO 6010
  73. 6030  GOSUB 300
  74. 6040  HOME : VTAB 10
  75. 6050 YY = YY +1900
  76. 6060  PRINT "CENTURY.DATE OF ";CD;" = ";MM;"-";DD;"-";YY
  77. 6070  GOSUB 10000
  78. 6080  GOTO 1000
  79. 8000  DIM VD(13):VD(1) = 0:VD(2) = 31:VD(3) = 59:VD(4) = 90:VD(5) = 120:VD(6) = 151:VD(7) = 181:VD(8) = 212:VD(9) = 243:VD(10) = 273:VD(11) = 304:VD(12) = 334:VD(13) = 365
  80. 8010  DIM VM(366):J = 1
  81. 8020  FOR I = 1 TO 366
  82. 8030  IF I >VD(J +1)  AND J <12  THEN J = J +1
  83. 8040 VM(I) = J: NEXT 
  84. 8050  DIM MO$(12):MO$(1) = "JAN":MO$(2) = "FEB":MO$(3) = "MAR":MO$(4) = "APR":MO$(5) = "MAY":MO$(6) = "JUN":MO$(7) = "JUL":MO$(8) = "AUG":MO$(9) = "SEP":MO$(10) = "OCT":MO$(11) = "NOV":MO$(12) = "DEC"
  85. 8060  DIM VD$(6):VD$(0) = "SUN":VD$(1) = "MON":VD$(2) = "TUE":VD$(3) = "WED":VD$(4) = "THR":VD$(5) = "FRI":VD$(6) = "SAT"
  86. 8070 N0 = 0:N1 = 1:N3 = 3:N4 = 4:N7 = 7
  87. 8080 LY = 365:SY = 60
  88. 8090  RETURN 
  89. 9000  HOME : HTAB 12: PRINT "GET MO-DA-YR"
  90. 9010  VTAB 6: CALL  -868: INPUT "MONTH (1-12)? ";MM$
  91. 9020 MM =  INT( VAL(MM$)): IF MM <1  OR MM >12 GOTO 9010
  92. 9030  VTAB 10: CALL  -868: INPUT "DAY (1-31)? ";DD$
  93. 9040 DD =  INT( VAL(DD$)): IF DD <1  OR DD >31 GOTO 9030
  94. 9050  VTAB 14: CALL  -868: INPUT "YEAR (1900-2099)? ";YY$
  95. 9060 YY =  INT( VAL(YY$)): IF YY <1900  OR YY >2099 GOTO 9050
  96. 9070 YY = YY -1900: RETURN 
  97. 10000  VTAB 22: INPUT "*** HIT RETURN FOR MENU ";R$: RETURN